package cache

import (
	"net"

	"gitee.com/gousing/cache/storage"
)

// GetIP 获取 net.IP 类型的缓存值, 如果不存在或已经过期则返回false
//   - 支持自动转换类型: string, intX, uintX ( 支持数字类型的 IPv4 地址 比如: 3232235521 => 192.168.0.1 )
func GetIP(key string) net.IP {
	val, _ := GetIPE(key)
	return val
}

// GetIPD 获取 net.IP 型的缓存值, 如果不存在或已经过期则返回指定的 defaultVal 默认值
//   - 支持自动转换类型: string, intX, uintX ( 支持数字类型的 IPv4 地址 比如: 3232235521 => 192.168.0.1 )
func GetIPD(key string, defaultVal net.IP) net.IP {
	val, err := GetIPE(key)
	if err != nil {
		return defaultVal
	}
	return val
}

// GetIPE 获取 net.IP 类型的缓存值, 如果不存在或已经过期则返回空值和错误信息
//   - 支持自动转换类型: string, intX, uintX ( 支持数字类型的 IPv4 地址 比如: 3232235521 => 192.168.0.1 )
func GetIPE(key string) (net.IP, error) {
	if key == "" {
		return net.IP{}, storage.ErrKeyIsEmpty
	}
	var val net.IP
	err := GetDefault().Scan(key, &val)
	return val, err
}
